package cn.edu.hunau.utils;

/**
 * @author hb
 * @date 2025-06-17 10:25:05
 */
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Md5Utils {

    /**
     * 对输入字符串进行MD5加密
     * @param input 待加密的字符串
     * @return 加密后的十六进制字符串，若加密失败则返回null
     */
    public static String md5(String input) {
        try {
            // 获取MD5摘要实例
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算摘要
            byte[] messageDigest = md.digest(input.getBytes());
            // 将字节数组转换为十六进制字符串
            return bytesToHex(messageDigest);
        } catch (NoSuchAlgorithmException e) {
            // 处理算法不存在的异常
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 将字节数组转换为十六进制字符串
     * @param bytes 字节数组
     * @return 十六进制字符串
     */
    private static String bytesToHex(byte[] bytes) {
        StringBuilder hexString = new StringBuilder();
        for (byte b : bytes) {
            String hex = String.format("%02x", b);
            hexString.append(hex);
        }
        return hexString.toString();
    }

    public static void main(String[] args) {
        // 测试示例
        String originalString = "1";
        String encryptedString = md5(originalString);
        System.out.println("原始字符串: " + originalString);
        System.out.println("MD5加密后: " + encryptedString);
        System.out.println("MD5加密后长度: " + encryptedString.length());
    }
}